<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Tyybiteisendus ehk type casting</title>
    </head>
    <body>
        <?php
            /*
             * PHP teeb ise automaatselt tüübiteisendusi, püüdes ennustada, mida
             * kasutaja parasjagu teha soovis. S.t. Integer ehk täisarvutüüpi 
             * väärtusele string ehk tekstitüüpi väärtuse lisamisel proovib 
             * interpretaator leida tekstist arvulise väärtuse ning selle vastavalt
             * tehtele kas täis või komakohaarvuks (real) teisendada. Kui tektist
             * arvulist väärtust ei leita, muudab interpretaator selle automaatselt 
             * 0-iks
             */
             $muutuja1 = 4; 
             $muutuja2 = '5';
             echo $muutuja2 + 10;
             echo '<br/>';
             /*
              * Seda, et väärtus nulliks muudetakse, tõestab ka see, et püüdes
              * arvu interpretaatori poolt teisendatud väärtusega jagada, antakse 
              * meile veateade. Nulliga ei saa teatavasti jagada!
              */
             $muutuja2 = 'dddasdasda';
             echo 'Nulliga jagamine annab veateate: ';
             echo 10/$muutuja2;
             echo '<br/>';
             
             /*
              * Interpretaatorilt saab väärtusi küsida spetsiaalsete funktsioonide
              * abil. Antud juhul peaks $muutuja1 olema täisarvutüüpi Integer
              * ning $muutuja2 olema tekstitüüpi String
              */
             echo '"$muutuja1" andmetüüp on: ' . gettype($muutuja1);
             echo '<br/>';
             echo '"$muutuja2" andmetüüp on: ' . gettype($muutuja2);
             echo '<br/>';
             
             /*
              * Defineeritud andmetüüpe saab aga ka muuta. Näiteks teisendame järgnevalt
              * defineeritava stringitüüpi muutuja integer tüüpi muutujaks
              */
             $muutuja3 = '10';
             settype($muutuja3, 'integer');
             //Kontrollime, kas muudatuse läbiviimine oli edukas
             echo 'Muutuja "$muutuja3" andmetüüp on: <b>' . gettype($muutuja3) . 
                     '</b>; ja väärtus on: <b>' . $muutuja3 . '</b>';
             echo '<br/>';
             /*
              * antud täisarvutüüpi saab taaskord tekstitüübiks tagasi muuta, 
              * kasutades järgmist süntaksit
              */
             $integerStringiks = (string) $muutuja3;
             echo 'Muutuja "$integerStringiks" andmetüüp on: <b>' . gettype($integerStringiks); 
             
             
             /*
              * Andmetüüpe on PHP-s mitmeid. Seda, mis tüüpi on mingi muutujas olev
              * väärtus annab kontrollida veel lisaks alljärgnevate funktsioonidega,
              * mis pole küll ammendavad, kuid katavad enamuse tihedamini kasutatavatest
              * andmetüübi defineerimise funktsioonidest:
              * 
              * is_string()
              * is_int()
              * is_numeric()
              * is_float
              * is_bool();
              * is_array();
              * is_null();
              * 
              * 
              * Täpsemat informatsiooni leiab järgnevalt veebilehelt
              * http://php.net/manual/en/language.types.php
              */ 
        ?>
    </body>
</html>
